Linux用户和组管理(超详细) | 您所在的位置:网站首页 › Linux Root用户操作之退出 › Linux用户和组管理(超详细) |
目录 一、理解用户账户文件和组文件 1.用户账户文件 2.理解组文件 二、管理用户账户 1.新建用户useradd 2.删除用户userdel 3.设置用户账户口令 3. 维护用户账户 三、管理组 1.创建组 2.删除组 3.修改组 4. 为组添加用户 Linux操作系统是一个多用户、多任务的操作系统,它允许多个用户同时登录到系统,使用系统资源。 在linux系统中用户账户分为两种,普通用户账户和超级管理员用户账户root普通用户只能进行普通工作,只能进行自身拥有或者有权限执行的文件。超级管理员用户它可以对普通用户和整个系统进行管理,对系统具有绝对的控制权! 我们在安装操作系统时,除了创建root用户外也会让我们创建一个普通用户。 用户和组的基本概念: 用户名:用来识别用户的名称,可以是字母、数字组成的字符串,区分大小写。 密码:用于验证用户身份的特殊验证码 用户标识(UID):用来表示用户的数字标识符 用户主目录:用户的私人目录,也是用户登录系统后默认所在的目录 登录shell:用户登录后默认使用的Shell程序,默认是/bin/bash 组:具有相同属性的用户属于同一个组 组标识(GID):用来表示组的数字标识符 centOS 7,UID范围 0-60000:0超级管理员,1-999程序用户,1000-60000普通用户,如果不指定UID,默认从1000开始编号 centOS 6,UID范围 0-60000:0超级管理员,1-499程序用户,500-60000普通用户 一个最高权限的超级管理员不是因为他叫root,是因为他的UID为0。 一、理解用户账户文件和组文件 1.用户账户文件1.1 /etc/passwd文件 所创建的用户信息都存放在/etc/passwd文件中,我们通过cat查看文件 [root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin . . . . . . 该文件中每一行代表用户账户的资料,一行中共有7段,用:隔开 举例:root:x:0:0:root:/root:/bin/bash 用户名:加密口令:UID:GID:用户描述信息:主目录:命令解释器 1.2 /etc/shadow文件 由于所有用户对/etc/passwd均有读取权限,为了曾强安全性,用户经过加密之后的口令都放在了/etc/shadow文件中,该文件只对root用户可读,大大提高了系统的安全性。 通过cat /etc/shadow打开文件: root : $6$416.9S5(第二段太长就省略了中间部分)IThqFX92gG/ : : 0 : 99999 : 7 : : : 该文件中分为9段,用:隔开。 各段的含义: 字段1:用户登录名。字段2:加密后的用户口令,*表示非登录用户,!!表示没设置密码。字段3:从1970年1月1日到用户最近一次口令被修改的天数。字段4:从1970年1月1日到用户可以更改密码的天数。字段5:从1970年1月1日到用户必须更改密码的天数。字段6:口令过期前几天提醒用户更该口令。字段7:口令过期后几天账户被禁用。字段8:口令被禁用的具体日期(从1970年1月1日到禁用时的天数)。字段9:保留段,用于功能扩展。 2.理解组文件2.1 /etc/group文件 该文件用于存放用户的组账户信息,与用户信息文件一样,任何用户都可以读,该文件每行分为4个段,每段用:隔开。cat查看一下: [root@localhost ~]# cat /etc/group root:x:0: bin:x:1: daemon:x:2: sys:x:3: . . . . . . 4个字段分别为:组名称:组口令(一般为空,用x占位):GID:组成员列表 2.2 /etc/gshadow文件 该文件存放组的加密口令、组管理员等信息,只对root用户可以读取。通过cat查看文件: [root@localhost ~]# cat /etc/gshadow root::: bin::: daemon::: . . . . . . 每一行中各段的含义: 组名称:加密后的组口令(没有就!):组的管理员:组成员列表 二、管理用户账户 1.新建用户useradduseradd [选项] 用户名 新建一个用户:1.自动建立一个同名的基本组;2.自动建立一个同名的家目录,在/home下 一个用户必须有一个基本组,附加组可有可无,也可以有多个。 基本组:一定要有,有且只有一个。 附加组:可有可无,也可以有多个,多个附加组之间用逗号","隔开 选项及解释: 选项解释-u指定uid-s指定的登录shell类型-M不建立主目录-d指定主目录里位置,(可以是不存在的目录)-e格式是YYYY-MM-DD,禁用账户的日期-g指定基本组-p设置密码-G指定附加组-r随机生成一个uid 1-999的用户,并且不建立家目录-c是添加备注信息-u:指定uid [root@localhost ~]# useradd user1 # 不加选项会默认从1000编号,安装系统时的普通用户UID为1000 [root@localhost ~]# tail -1 /etc/passwd user1:x:1001:1001::/home/user1:/bin/bash # 发现不加选项UID是1001 [root@localhost ~]# useradd -u 1010 user2 #指定UID为1010 [root@localhost ~]# tail -2 /etc/passwd user1:x:1001:1001::/home/user1:/bin/bash user2:x:1010:1010::/home/user2:/bin/bash #发现用户user2的UID是1010了 -s指定的登录shell类型 [root@localhost ~]# useradd user1 # 不加选项 [root@localhost ~]# tail -1 /etc/passwd user1:x:1001:1001::/home/user1:/bin/bash # 默认是/bin/bash [root@localhost ~]# useradd -s /bin/false user2 #加选项,-s,指定登录的shell [root@localhost ~]# tail -2 /etc/passwd user1:x:1001:1001::/home/user1:/bin/bash user2:x:1002:1002::/home/user2:/bin/false # 发现user2登录的shell为/bin/false -M不建立主目录 [root@localhost ~]# ls /home custom [root@localhost ~]# useradd user1 # 不加选项 [root@localhost ~]# tail -1 /etc/passwd user1:x:1001:1001::/home/user1:/bin/bash #默认有个主目录/home/user1下 [root@localhost ~]# ls /home #默认有个主目录/home/user1下 custom user1 [root@localhost ~]# useradd -M user2 # -M不建立主目录 [root@localhost ~]# tail -2 /etc/passwd #通过查看,建立了两个用户user1,2 user1:x:1001:1001::/home/user1:/bin/bash user2:x:1002:1002::/home/user2:/bin/bash [root@localhost ~]# ls /home custom user1 # 在/home下只有user1的主目录,由于user2加了-M选项,没有主目录 -d指定主目录里位置,(可以是不存在的目录) [root@localhost ~]# useradd user1 [root@localhost ~]# tail -1 /etc/passwd user1:x:1001:1001::/home/user1:/bin/bash #可以看到,主目录在/home/user1 [root@localhost ~]# useradd -d /home/Linux user2 # 指定主目录在/home/Linux下 [root@localhost ~]# tail -2 /etc/passwd user1:x:1001:1001::/home/user1:/bin/bash user2:x:1002:1002::/home/Linux:/bin/bash # 可以看到/home/Linux [root@localhost ~]# ls /home Linux custom user1 #Linux就是user2的主目录 -e格式是YYYY-MM-DD,禁用账户的日期 [root@localhost ~]# useradd user1 [root@localhost ~]# tail -1 /etc/shadow user1:!!:19820:0:99999:7::: [root@localhost ~]# useradd -e 2024-04-20 user2 ###设置到2024-04-20到期禁用账户## [root@localhost ~]# tail -2 /etc/shadow user1:!!:19820:0:99999:7::: user2:!!:19820:0:99999:7::19833: # 也就是在1970-01-01算起,过19833天就禁用账户。 我们来计算下从1970-01-01起,过19833天后是不是2024-04-20 今天是4月7日,再过13天是4月20日。没错。 我们也可以看出1970-01-01起,过19833天是2024-04-20.也就是19833天后到期,即2024-04-20禁用账户。 -g指定基本组 [root@localhost ~]# tail -1 /etc/group #创建好的一个组,组ID是3001(后面有讲解创建组) group1:x:3001: [root@localhost ~]# useradd user1 #不加选项创建user1, [root@localhost ~]# tail -1 /etc/passwd user1:x:1001:1001::/home/user1:/bin/bash #组ID,默认按顺序是1001 [root@localhost ~]# useradd -g 3001 user2 # 加选项,加入到基本组3001中 [root@localhost ~]# tail -2 /etc/passwd user1:x:1001:1001::/home/user1:/bin/bash user2:x:1002:3001::/home/user2:/bin/bash # 发现基本组ID不是1002 ,而是3001了 2.删除用户userdeluserdel [选项] 用户名 -r 连家目录一起删除 [root@localhost ~]# ls /home custom user1 user2 user3 [root@localhost ~]# userdel user3 # 不加选项 [root@localhost ~]# ls /home # 家目录还在 custom user1 user2 user3 [root@localhost ~]# userdel -r user2 # 加选项-r [root@localhost ~]# ls /home # 家目录一并删除 custom user1 user3 3.设置用户账户口令passwd命令 选项说明-l锁定用户账户-u口令解锁-d将用户口令设置为空(可以登录系统),与未设置口令不同(无法登录系统)[root@localhost ~]# useradd -p 123456 user1 #设置密码123456 [root@localhost ~]# passwd user1 # root用户更改user1的密码 更改用户 user1 的密码 # 更改为符合要求的密码: 新的 密码: #大小写字母数字特殊符号等,不少于8位 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@localhost ~]# passwd -l user1 # 锁定用户,禁止登录 锁定用户 user1 的密码 。 passwd: 操作成功 [root@localhost ~]# passwd -uf user1 # 解锁用户 解锁用户 user1 的密码。 passwd: 操作成功 3. 维护用户账户3.1 修改用户账户。usermod [选项] 用户名 usermod与useradd大致差不多,就是修改用户账户的。 [root@localhost ~]# useradd user1 # 创建用户 [root@localhost ~]# useradd user2 # 创建用户 [root@localhost ~]# groupadd group1 -g 3001 # 创建组,指定组ID 3001 [root@localhost ~]# tail -2 /etc/passwd user1:x:1001:1001::/home/user1:/bin/bash user2:x:1002:1002::/home/user2:/bin/bash [root@localhost ~]# tail -3 /etc/group user1:x:1001: user2:x:1002: group1:x:3001: -g 变更所属用户组(基本组) [root@localhost ~]# usermod -g 1002 user1 [root@localhost ~]# tail -2 /etc/passwd user1:x:1001:1002::/home/user1:/bin/bash # 组ID变成了1002 user2:x:1002:1002::/home/user2:/bin/bash -G 变更附加组 [root@localhost ~]# usermod -G group1 user1 #使用组名group1,也可以使用组ID:3001 [root@localhost ~]# tail -3 /etc/group user1:x:1001: user2:x:1002:group1:x:3001:user1 #附加组 [root@localhost ~]# id user1 uid=1001(user1) gid=1001(user1) 组=1001(user1),3001(group1) -u 指定UID [root@localhost ~]# usermod -u 1011 user1 [root@localhost ~]# tail -2 /etc/passwd user1:x:1011:1001::/home/user1:/bin/bash # 指定UID1011 user2:x:1002:1002::/home/user2:/bin/bash -s 指定登录的shell类型 [root@localhost ~]# usermod -s /sbin/nologin user1 [root@localhost ~]# tail -2 /etc/passwd user1:x:1011:1001::/home/user1:/sbin/nologin user2:x:1002:1002::/home/user2:/bin/bash -L锁定用户,-U解锁用户(用户要有密码)可先通过usermod -p 12345678 user1设置密码 [root@localhost ~]# usermod -L user1 # 锁定用户 [root@localhost ~]# passwd -S user1 # 查看用户是否被锁定 user1 LK 2024-04-07 0 99999 7 -1 (密码已被锁定。) [root@localhost ~]# usermod -U user1 #解锁用户 [root@localhost ~]# passwd -S user1 # 查看用户是否被锁定 user1 PS 2024-04-07 0 99999 7 -1 (更改当前使用的认证方案。) 三、管理组 1.创建组groupadd [选项] 组名 -g 指定组ID [root@localhost ~]# groupadd group1 [root@localhost ~]# tail -1 /etc/group group1:x:1001: [root@localhost ~]# groupadd -g 1999 group2 #自定义设置组ID为1999 [root@localhost ~]# tail -2 /etc/group group1:x:1001: group2:x:1999: 2.删除组groupdel 组名 [root@localhost ~]# tail -2 /etc/group group1:x:1001: group2:x:1999: [root@localhost ~]# groupdel group2 #删除组group2 [root@localhost ~]# tail -2 /etc/group custom:x:1000:custom group1:x:1001: 3.修改组groupmod [选项] 组名 -g 修改组ID [root@localhost ~]# tail -1 /etc/group group1:x:1001: [root@localhost ~]# groupmod -g 1010 group1 [root@localhost ~]# tail -1 /etc/group group1:x:1010: -n 修改组名称 [root@localhost ~]# tail -1 /etc/groupgroup1:x:1010: [root@localhost ~]# groupmod -n GROUP1 group1 [root@localhost ~]# tail -1 /etc/groupGROUP1:x:1010: -o 强制 4. 为组添加用户-a 把用户添加到组中 [root@localhost ~]# tail -2 /etc/groupGROUP1:x:1010: user1:x:1001: [root@localhost ~]# gpasswd -a user1 GROUP1 # 将user1 添加到GROUP1中 正在将用户“user1”加入到“GROUP1”组中 [root@localhost ~]# tail -2 /etc/groupGROUP1:x:1010:user1 user1:x:1001: -d 把用户从组中删除 [root@localhost ~]# tail -2 /etc/groupGROUP1:x:1010:user1 user1:x:1001: [root@localhost ~]# gpasswd -d user1 GROUP1 # 将user1从GROUP1中删除 正在将用户“user1”从“GROUP1”组中删除 [root@localhost ~]# tail -2 /etc/groupGROUP1:x:1010: user1:x:1001: 说明:usermod与gpasswd都可以实现将用户添加到组中,usermod是操作用户的,像是把用户推到组中去,gpasswd是操作组,像是把用户拉到组中来。 |
CopyRight 2018-2019 实验室设备网 版权所有 |